struct SmartData {
    data: String,
}

impl Drop for SmartData {
    fn drop(&mut self) {
        println!("Drop Smart Data {}!", self.data);
    }
}

fn main() {
    let _c = SmartData {
        data: String::from("my data"),
    };
    let _d = SmartData {
        data: String::from("my next data"),
    };
    println!("main process end.");
}
